/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package EJB.Business;

import Entity.Usuario;
import Exceptions.BusinessException;
import EJB.Entity.UsuarioFacade;
import EJB.Entity.UsuarioFacadeLocal;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import java.util.Date;
import java.util.List;
import java.sql.Timestamp;
import Entity.Reserva;


/**
 *
 * @author mquezada
 */
@Stateless
public class GestorDeUsuarios implements GestorDeUsuariosLocal {

    private Usuario usuario;
    private @EJB UsuarioFacadeLocal ufacade;

    public GestorDeUsuarios(){
        usuario = new Usuario();
        ufacade = new UsuarioFacade();
    }

    public boolean login(String username, String password) {
        usuario = ufacade.findByUsername(username);        
	    if (usuario != null && usuario.getPassword().equals(password)){
	        return true;
	    }
        return false;
    }

    public boolean register(String[] params) throws BusinessException {
        if(params.length!=7)
            throw new BusinessException("Cantidad de parametros erronea");
        usuario.setUsuario(params[0]);
        usuario.setPassword(params[1]);
        usuario.setEmail(params[2]);
        usuario.setNombre(params[3]);
        usuario.setApellido(params[4]);
        usuario.setTelefono(Integer.parseInt(params[5]));
        usuario.setDireccion(params[6]);
        Timestamp actual = new Timestamp(new Date().getTime());
        usuario.setFechaCreacion(actual);
        usuario.setAdministrador(0);
        usuario.setActivo(1);
        if(findUsuario(usuario.getUsuario()))
            return false;
        ufacade.create(usuario);
        return true;
    }

    public Usuario getUsuario(String username){
        return ufacade.findByUsername(username);
    }
    
    public Usuario getUsuarioById(int id) {
    	return ufacade.find(id);
    }

    public boolean findUsuario(String username){
        if(ufacade.findByUsername(username) == null)return false;
        return true;
    }

        public void modificarNombre(String nombre){
        usuario.setNombre(nombre);
        ufacade.edit(usuario);
    }

    public void modificarApellido(String apellido){
        usuario.setApellido(apellido);
        ufacade.edit(usuario);
    }

    public void modificarDireccion(String direccion){
        usuario.setDireccion(direccion);
        ufacade.edit(usuario);
    }

    public void modificarEmail(String email){
        usuario.setEmail(email);
        ufacade.edit(usuario);
    }

    public void modificarTelefono(int telefono){
        usuario.setTelefono(telefono);
        ufacade.edit(usuario);
    }

    public void changePassword(String password){
        usuario.setPassword(password);
        ufacade.edit(usuario);
    }

    public List<Reserva> obtenerReservas(){
        return ufacade.allReservas(usuario.getId());
    }


    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

}
